package com.zzyl.serve.service.impl.admin;

import java.util.List;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.zzyl.common.utils.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.zzyl.serve.mapper.admin.ElderMapper;
import com.zzyl.serve.domain.admin.Elder;
import com.zzyl.serve.service.admin.IElderService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import java.util.Arrays;

/**
 * 老人Service业务层处理
 *
 * @author ruoyi
 * @date 2025-03-05
 */
@Service
public class ElderServiceImpl extends ServiceImpl<ElderMapper, Elder> implements IElderService {
    @Autowired
    private ElderMapper elderMapper;

    /**
     * 查询老人
     *
     * @param id 老人主键
     * @return 老人
     */
    @Override
    public Elder selectElderById(Long id) {
        return getById(id);
    }

    /**
     * 查询老人列表
     *
     * @param elder 老人
     * @return 老人
     */
    @Override
    public List<Elder> selectElderList(Elder elder) {
        return elderMapper.selectElderList(elder);
    }

    /**
     * 新增老人
     *
     * @param elder 老人
     * @return 结果
     */
    @Override
    public int insertElder(Elder elder) {
        return save(elder) ? 1 : 0;
    }

    /**
     * 修改老人
     *
     * @param elder 老人
     * @return 结果
     */
    @Override
    public int updateElder(Elder elder) {
        return updateById(elder) ? 1 : 0;
    }

    /**
     * 批量删除老人
     *
     * @param ids 需要删除的老人主键
     * @return 结果
     */
    @Override
    public int deleteElderByIds(Long[] ids) {
        return removeByIds(Arrays.asList(ids)) ? 1 : 0;
    }

    /**
     * 删除老人信息
     *
     * @param id 老人主键
     * @return 结果
     */
    @Override
    public int deleteElderById(Long id) {
        return removeById(id) ? 1 : 0;
    }

    /**
     * 查询老人信息用于设备的绑定
     *
     * @param status
     * @param name
     * @param pageNum
     * @param pageSize
     * @param idCardNo
     * @return
     */
    @Override
    public List<Elder> pageQuery(Integer status, String name, Integer pageNum, Integer pageSize, String idCardNo) {
        // TODO 1.使用Mybatisplus的分页查询
        Page<Elder> elderPage = Page.of(pageNum, pageSize);
        // TODO 2.根据条件去搜索老人 ,再加一个如果当前老人或者固定设备绑定了同类型是同类型的设备就不能再去绑定了
        LambdaQueryWrapper<Elder> lqw=new LambdaQueryWrapper<>();
        lqw.like(name!=null&&name!="",Elder::getName,name)
                .eq(status!=null,Elder::getStatus,status)
                .eq(idCardNo!=null,Elder::getIdCardNo,idCardNo)
                .select(Elder::getId,Elder::getName,Elder::getIdCardNo,Elder::getBedNumber);


        //根据条件去筛选数据
         page(elderPage,lqw);
         return elderPage.getRecords();
    }
}
